package com.db;

import com.bean.PaginationSupport;
import com.bean.User;

/**
 * @author zhi keyan
 * @create 2020-12-11 21:50
 */
public interface UserRepository {

    /**
     * 新建一个用户
     * @param user 新建的用户
     * @return 用户
     */
    User save(User user);

    /**
     * 根据用户名查找用户
     * @param username
     * @return
     */
    User findByUserName(String username);

    /**
     * 依据用户名和密码查找用户
     * @param username
     * @param password
     * @return 用户
     */
    User findByUserName(String username, String password);

    /**
     * 依据userID查找用户
     * @param userID
     * @return
     */
    User findByUserID(int userID);

    /**
     * 依据页码和指定页面大小，返回所有用户列表
     * @param pageNo    起始位置
     * @param pageSize  每页数量
     * @return 分页是对象
     */
    PaginationSupport<User> findAllUserPage(int pageNo, int pageSize);


    /**
     * 依据页码和指定页面大小，返回锁定用户列表
     * @param pageNo    起始位置
     * @param pageSize  每页数量
     * @return 分页是对象
     */
    PaginationSupport<User> findLockUserPage(int pageNo, int pageSize);

    /**
     * 依据页码和指定页面大小，返回未锁定用户列表
     * @param pageNo    起始位置
     * @param pageSize  每页数量
     * @return 分页是对象
     */
    PaginationSupport<User> findUnlockUserPage(int pageNo, int pageSize);

    /**
     * 改变用户的isLock状态
     * @param locked
     */
    void changeLock(User locked);

    /**
     * 取得所有用户的数量
     * @return 用户的数量
     */
    long countUser();

    /**
     * 取得锁定用户的数量
     * @return 用户的数量
     */
    long countLockUser();

    /**
     * 取得未锁定用户的数量
     * @return 用户的数量
     */
    long countUnlockUser();

    /**
     * 获得最大的用户id
     * @return
     */
    int maxuserid();
}
